package com.bub.pay.core.manager.merchant;

import com.bub.pay.core.entity.domain.SysUser;
import com.bub.pay.core.entity.domain.SysUserRole;
import com.bub.pay.core.entity.dto.merchant.MerUserDTO;
import com.bub.pay.core.base.IBaseManager;
import com.bub.pay.core.entity.dto.merchant.MerchantUserDTO;
import com.bub.pay.core.entity.dto.merchant.NewBuiltMerchantEmployeeDTO;
import com.bub.pay.core.entity.dto.merchant.ResetPasswordDTO;
import com.bub.pay.core.entity.vo.merchant.MerchantEmployeeVo;
import com.bub.pay.core.entity.vo.merchant.MerchantUserVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商户端 , 员工用户操作service
 * @Author: wing
 * @Date: 2019/4/10 16:53
 */
public interface MerUserManager extends IBaseManager<SysUser> {

//    /**
//     * 商户端 , 添加员工
//     * @param vo
//     * @return
//     */
//    public int addMerchantEmployee(MerchantUserVo vo);

    /**
     * 商户端,分页查询员工
     * @param user
     * @return
     */
    List<MerUserDTO> selectMerUserPage(SysUser user);

    /**
     * 商户端 , 修改员工
     * @param userRole
     * @return
     */
    int updateMerUser(SysUser user, SysUserRole userRole);

    /**
     * 商户后台员工查询
     * @param merchantEmployee
     * @return
     */
    List<MerchantUserDTO> selectMerchantUser(MerchantEmployeeVo merchantEmployee);

    /**
     * 更新商户后台员工状态(可用或不可用)
     * @param merchantEmployeeVo
     * @return
     */
    int updateMerchantEmployeeStatus(MerchantEmployeeVo merchantEmployeeVo);

    /**
     * 删除商户后台指定员工
     * @param merchantEmployeeVo
     * @return
     */
    int deleteMerchantEmployee(MerchantEmployeeVo merchantEmployeeVo);

    /**
     * 修改商户后台员工信息(姓名 邮箱 角色 状态)
     * @param merchantEmployeeVo
     * @return
     */
    int updateMerchantEmployee(MerchantEmployeeVo merchantEmployeeVo);

    /**
     * 重置后台密码
     * @param resetPasswordDTO
     * @return
     */
    int resetMerchantPassword(ResetPasswordDTO resetPasswordDTO);

    /**
     * 商户后台新建员工
     * @param newBuiltMerchantEmployeeDTO
     * @return
     */
    int newBuiltMerchantEmployee(NewBuiltMerchantEmployeeDTO newBuiltMerchantEmployeeDTO);
}
